02. Getting Started

Clone the AIND-CV-Mimic repo on GitHub, and follow the instructions below.

We’ll be using Affectiva’s Emotion-as-a-Service API for this project. Visit their Developer Portal and try out some of the sample apps. Affectiva makes it really easy to extract detailed information about faces in an image or video stream. To get a sense for what information you can obtain, check out the Metrics page.

Project files

To start working on the project, open the following files in your favorite text editor:

  • mimic.js: Javascript file with code that connects to the Affectiva API and processes results.
  • index.html: Dynamic webpage that displays the video feed and results.
  • mimic.css: Stylesheet file that defines the layout and presentation for HTML elements.

You only need to implement the TODOs in mimic.js to complete the project. But feel free to modify the HTML and/or CSS file to change the look and feel of your game!

There are two additional files provided for serving your project as a local web application - you do not need to make any changes to them:

  • serve.py: A lightweight Python webserver required to serve the webpage over HTTPS, so that we can access the webcam feed.
  • generate-pemfile.sh: A shell script you’ll need to run once to generate an SSL certificate for the webserver.

Serving locally over HTTPS

In order to access the webcam stream, modern browsers require you to serve your web app over HTTPS. To run locally, you will need to general an SSL certificate (this is a one-time step):

  • Open a terminal or command-prompt, and ensure you are inside the AIND-CV-Mimic/ directory.
  • Run the following shell script: generate-pemfile.sh

This creates an SSL certificate file named my-ssl-cert.pem that is used to serve over https.

Now you can launch the server using:

python serve.py

Note: The serve.py script uses Python 3.

Alternately, you can put your HTML, JS and CSS files on an online platform (such as JSFiddle) and develop your project there.

Running and implementing the game

Open a web browser and go to: https://localhost:4443/

  • Hit the Start button to initiate face tracking. You may have to give permission for the app to access your webcam.
  • Hit the Stop button to stop tracking and Reset to reset the detector (in case it becomes stuck or unstable).
  • Modify the Javascript code to implement TODOs as indicated in inline comments. Then refresh the page in your browser (you may need to do a "hard-refresh" for the changes to show up, e.g. Cmd+Shift+R on a Mac), or use an auto-reload solution.
  • When you’re done, you can shutdown the server by pressing Ctrl+C at the terminal.

Note: Your browser may notify you that your connection is not secure - that is because the SSL certificate you just created is not signed by an SSL Certificate Authority‎. This is okay, because we are using it only as a workaround to access the webcam. You can suppress the warning or choose "Proceed Anyway" to open the page.

As you work on your code, you may have to refer to resources in Affectiva's JS SDK documentation.